package com.xpj.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * 缓存查询注解，标记需要进行缓存的查询方法
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CacheQuery {

    /**
     * 缓存键前缀
     */
    String keyPrefix();

    /**
     * 缓存键参数索引（从0开始）
     */
    int keyParamIndex() default 0;

    /**
     * 缓存键的SpEL表达式（优先级高于keyParamIndex）
     * 例如："#id" 表示取方法参数中的id值
     */
    String keySpEL() default "";


    /**
     * 缓存过期时间（秒）
     */
    long ttl() default 1800;

    /**
     * 是否使用布隆过滤器
     */
    boolean useBloomFilter() default false;

    /**
     * 布隆过滤器Bean名称
     * 当useBloomFilter为true时需要指定
     */
    String bloomFilterBean() default "";
}
    